package xml;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;

/**
 * @author 孙许
 * @date 2018-04-18
 * @description
 */
public class DocumentDemo {

    /**
     * 1.获取一个DocumentBuilderFactory的工厂类对象
     * 2.生成一个DocumentBuilder对象
     * 3.找到一个File文件
     * 4.将File文件解析成Document
     *
     * @param file xml文件
     * @return document对象
     * @throws Exception
     */
    public Document getDocumentByFile(File file) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(file);
        return document;
    }

    /**
     * Document对象是XML文档的树形结构在内存中的表示方式。
     * 可以通过调用getDocumentElement方法来启动对文档内容的分析
     *
     * @param doc
     * @return
     */
    public NodeList getNodeListByDocument(Document doc) {
        Element root = doc.getDocumentElement();
        NodeList childNodes = root.getChildNodes();
        return childNodes;
    }

    public Node getNodeByDocument(Document doc) {
        Element root = doc.getDocumentElement();
        NodeList childNodes = root.getChildNodes();
        for (int i = 0; i < childNodes.getLength(); i++) {
            Node childNode = childNodes.item(i);
            if (childNode.getNodeName().equals("name")) {
                return childNode;
            }
        }
        return null;
    }
}
